Pese a que la mayoría de expresiones son binarias (o sea, tienen dos operandos), hay una que no hemos visto todavía. Es muy intuitiva, si tenemos dos variables enteras (o reales)
int a = 3, b;
y hacemos la asignación
b = -a;
el valor que b tendrá después de la asignación es -3. La novedad está en que -a es una expresión que indica que hay que cambiar de signo el valor de la variable a y eso es una operación con un solo operando. Un operador que recibe un solo operando se denomina un operador unario. La resta tiene dos versiones, entonces, una binaria y otra unaria (el cambio de signo).
Así como las operaciones de suma són lógicas para tipos numéricos como int o double, no parece que sean tan lógicas para un tipo como string.
Sin embargo, el operador de suma funciona con strings y tiene un significado bastante lógico: sumar dos strings crea un nuevo string que es la concatenación, o sea un string que hace una frase con dos palabras seguidas.
Veamos un ejemplo: el siguiente programa
string trozo = "Mi nombre es Bond", frase; frase = trozo + ", James Bond"; cout << frase << endl;
muestra por pantalla
Mi nombre es Bond, James Bond
La frase, por tanto contendrá un string que une el trozo con ", James Bond" en una sola cadena (da ahí lo de "concatenar").
La siguiente tabla resume lo visto hasta el momento sobre operadores.
Operación | int | double | string |
---|---|---|---|
Suma | + | + | no existe |
Resta | - | - | no existe |
Multiplicación | * | * | no existe |
Divisón | / | / | no existe |
Módulo | % | no existe | no existe |
Cambio de signo | - | - | no existe |
Concatenación | no existe | no existe | + |
Suponiendo las siguientes declaraciones
int a = 5, b = 2, c = 7, d = 1; double x = 1.0, y = 0.5, z = 1.5;
Evalúa manualmente cada una de las siguientes expresiones:
a - b - c c / b / b x * z / y c / (a / b) a + b*2 + d*(1 - c) x*y + z*2.0*(x - 1.0) 5*(-a) + c*3 - b
Comprueba luego si estabas en lo cierto haciendo un programa de prueba.
En preparación